import {
    iosProvinces,
    iosCitys,
    iosCountys
} from "@/components/share/area/areaData_v2.js";
const reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");

export default function(Vue) {
    //省份
    Vue.filter("province", function(val) {
        if (val && val !== '') {
            if (reg.test(val)) {
                return val;
            }
            if (val && val != null && val != 'undefined') {
                for (var i = 0; i < iosProvinces.length; i++) {
                    if (iosProvinces[i].id == val) {
                        return iosProvinces[i].value;
                    }
                };
            }
        } else {
            return '';
        }
    });
    //市份
    Vue.filter("city", function(val) {
        if (val && val !== '') {
            if (reg.test(val)) {
                return val;
            }
            if (val && val != null && val != 'undefined') {
                for (var i = 0; i < iosCitys.length; i++) {
                    if (iosCitys[i].id == val) {
                        return iosCitys[i].value;
                    }
                };
            }
        } else {
            return '';
        }
    });

    //区
    Vue.filter("district", function(val) {
        if (val && val !== '') {
            if (reg.test(val)) {
                return val;
            }
            if (val && val != null && val != 'undefined') {
                for (var i = 0; i < iosCountys.length; i++) {
                    if (iosCountys[i].id == val) {
                        return iosCountys[i].value;
                    }
                };
            }
        } else {
            return '';
        }
    });

    Vue.filter("filterImg", function(val) {
        if (val != null && val != "null") {
            if (
                val[0] != null &&
                val != "null" &&
                JSON.parse(val)[0] != null &&
                JSON.parse(val)[0] != "null" &&
                JSON.parse(val)[0].Mobile
            ) {
                return JSON.parse(val)[0].Mobile.Url + JSON.parse(val)[0].Mobile.Name;
            } else {
                return "/static/img/none.jpg";
            }
        } else {
            return "/static/img/none.jpg";
        }
    });

    Vue.filter("filterImgUrl", function(val) {
        if (val != null && val != "null" && val && val != '[]' && val != '[null,null,null,null]') {
            val = JSON.parse(val);
            if (val.length == 1 && !val[0].Mobile) {
                return "https://image.csyaoly.com" + val;
            } else {
                if (!val[0].Mobile) {
                    return val[0];
                } else {
                    return val[0].Mobile.Url + val[0].Mobile.Name;
                }
            };
        } else {
            return "/static/img/none.jpg";
        }
    });

    Vue.filter("simpleImgUrl", function(val) {
        if (val.indexOf('obs') > -1) {
            return val
        }
        if (val != null && val != "null" && val) {
            return "https://image.csyaoly.com" + val;
        } else {
            return val;
        }
    });

    Vue.filter("ContactImg", function(val) {
        if (val != null && val != "null") {
            if (
                val[0] != null &&
                val != "null" &&
                JSON.parse(val)[0] != null &&
                JSON.parse(val)[0] != "null"
            ) {
                return JSON.parse(val)[0].Mobile.Url + JSON.parse(val)[0].Mobile.Name;
            } else {
                return "/images/myfile_img.png";
            }
        } else {
            return "/images/myfile_img.png";
        }
    });

    Vue.filter("UniImgFilter", function(val) {
        console.log(val)
        const imgServer = 'https://image.csyaoly.com';
        let img = '';
        if (val != null && val != "null" && val) {
            if (typeof(val) === 'object') {
                if (val.Mobile.Url && val.Mobile.Name) {
                    if (val.Mobile.Url.indexOf('/File/Image/') > -1) {
                        img = imgServer + val.Mobile.Url //拼接图片服务器地址
                    } else {
                        img = val.Mobile.Url + val.Mobile.Name; //拼接药链云自身的图片地址
                    }
                }
            }
            if (typeof(val) === 'string') {

            }
        }
        return img;
    });

    // 时间轴
    Vue.filter("time", function(value) {
        if (value && value != '') {
            // var fmt = "yyyy-MM-dd hh:mm:ss";
            var fmt = "yyyy-MM-dd";
            let date = new Date(value);
            if (isNaN(date)) {
                return value;
            }
            var o = {
                "M+": date.getMonth() + 1, //月份
                "d+": date.getDate(), //日
                "h+": date.getHours(), //小时
                "m+": date.getMinutes(), //分
                "s+": date.getSeconds(), //秒
                "q+": Math.floor((date.getMonth() + 3) / 3), //季度
                S: date.getMilliseconds() //毫秒
            };
            if (/(y+)/.test(fmt))
                fmt = fmt.replace(
                    RegExp.$1,
                    (date.getFullYear() + "").substr(4 - RegExp.$1.length)
                );
            for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt))
                    fmt = fmt.replace(
                        RegExp.$1,
                        RegExp.$1.length == 1 ?
                        o[k] :
                        ("00" + o[k]).substr(("" + o[k]).length)
                    );
            return fmt;
        } else {
            return '';
        }
    });

    // 时间轴
    Vue.filter("timeHurs", function(value) {
        // var fmt = "yyyy-MM-dd hh:mm:ss";
        var fmt = "hh:mm";
        var date = new Date(value);
        var o = {
            "M+": date.getMonth() + 1, //月份
            "d+": date.getDate(), //日
            "h+": date.getHours(), //小时
            "m+": date.getMinutes(), //分
            "s+": date.getSeconds(), //秒
            "q+": Math.floor((date.getMonth() + 3) / 3), //季度
            S: date.getMilliseconds() //毫秒
        };
        if (/(y+)/.test(fmt))
            fmt = fmt.replace(
                RegExp.$1,
                (date.getFullYear() + "").substr(4 - RegExp.$1.length)
            );
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt))
                fmt = fmt.replace(
                    RegExp.$1,
                    RegExp.$1.length == 1 ?
                    o[k] :
                    ("00" + o[k]).substr(("" + o[k]).length)
                );
        return fmt;
    });

    // 时间轴
    Vue.filter("timeshort", function(value) {
        if (value) {
            if (value.indexOf('-') > -1) {
                var value1 = value.split("-")[0];
                if (value1 == "0001") {
                    return "--";
                }
            }
            if (value.indexOf('.') > -1) {
                value = value.split('.')[0];
            }
        }
        return value ? value.replace('T', ' ') : '';
    });
    // 数字向上取整
    Vue.filter("ceilNum", function(val) {
        return val ? Math.ceil(val) : "";
    });
    // 医院等级
    Vue.filter("rank", function(val) {
        if (!val) {
            return "";
        }
        switch (val) {
            case "1":
                return "一级";
                break;
            case "2":
                return "二级";
                break;
            case "3":
                return "三级";
                break;
        }
    });

    Vue.filter("grade", function(val) {
        if (!val) {
            return "";
        }
        switch (val) {
            case "1":
                return "甲等";
                break;
            case "2":
                return "乙等";
                break;
            case "3":
                return "丙等";
                break;
        }
    });

    //金额格式化
    Vue.filter("fmoney", function(num) {
        if (!num) {
            return '0.00'
        }
        num = num.toString().replace(/\$|\,/g, "");
        if (isNaN(num)) num = "0";
        var sign = num == (num = Math.abs(num));
        num = Math.floor(num * 100 + 0.50000000001);
        var cents = num % 100;
        num = Math.floor(num / 100).toString();
        if (cents < 10) cents = "0" + cents;
        for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
            num =
            num.substring(0, num.length - (4 * i + 3)) +
            "," +
            num.substring(num.length - (4 * i + 3));
        return (sign ? "" : "-") + num + "." + cents;
    });

    Vue.filter("jsDateDiff", function(dateTimeStamp) {
        if (!dateTimeStamp) return '';
        dateTimeStamp = dateTimeStamp.split("T")[0];
        dateTimeStamp = Date.parse(dateTimeStamp);
        var minute = 1000 * 60;
        var hour = minute * 60;
        var day = hour * 24;
        var halfamonth = day * 15;
        var month = day * 30;
        var newsd = new Date();
        var today = newsd.getFullYear() + '/' + (newsd.getMonth() + 1) + '/' + newsd.getDate();
        var now = new Date(today).getTime();
        var diffValue = now - dateTimeStamp;
        var monthC = diffValue / month;
        var weekC = diffValue / (7 * day);
        var dayC = diffValue / day;
        var hourC = diffValue / hour;
        var minC = diffValue / minute;
        var result = "";
        if (diffValue < 0) {
            // if (-monthC >= 1) {
            //     result = "" + parseInt(-monthC) + "个月后";
            // } else if (-weekC >= 1) {
            //     result = "" + parseInt(-weekC) + "周后";
            // } else 
            if (-dayC >= 1) {
                result = "" + parseInt(-dayC) + "天后";
            } else result = "今天";
            return result;
        }
        if (monthC >= 1) {
            result = "" + parseInt(monthC) + "月前";
        } else if (weekC >= 1) {
            result = "" + parseInt(weekC) + "周前";
        } else if (dayC >= 1) {
            result = "" + parseInt(dayC) + "天前";
        }
        // else if (hourC >= 1) {
        //     result = "" + parseInt(hourC) + "小时前";
        // } else if (minC >= 1) {
        //     result = "" + parseInt(minC) + "分钟前";
        // }
        else result = "今天";
        return result;
    });

    function getDateTimeStamp(dateStr) {
        return Date.parse(dateStr.replace(/-/gi, "/"));
    }

    Vue.filter("role", function(val) {
        if (!val) {
            return "";
        }
        switch (val) {
            case "Salesman":
                return "业务员";
                break;
            case "Hospital":
                return "客户";
                break;
            case "Pharmacy":
                return "药店";
                break;
            case "Warehouse":
                return "仓管";
                break;
            case "BillingClerk":
                return "开票员";
                break;
            case "ServiceManager":
                return "业务经理";
                break;
            case "Driver":
                return "配送员";
                break;
            case "Dispatch":
                return "运输调度";
                break;
        }
    });

    Vue.filter("billstate", function(val) {
        if (!val) {
            return "";
        }
        switch (val) {
            case "P01":
                return "待提交";
                break;
            case "P02":
                return "待受理";
                break;
            case "P03":
                return "待出库";
                break;
            case "P04":
                return "部分出库";
                break;
            case "P05":
                return "全部出库";
                break;
            case "P06":
                return "业务经理";
                break;
            case "P07":
                return "已完结";
                break;
            case "P08":
                return "待出库";
                break;
            case "P09":
                return "已提货";
                break;
            case "P10":
                return "已交货";
                break;
            case "P11":
                return "缺货处理中";
                break;
        }
    });
    Vue.filter("Trsupplierhvpostate", function(val) {
        if (!val) {
            return "";
        }
        switch (val) {
            case "N":
                return "待提交";
                break;
            case "Y":
                return "已提交";
                break;
        }
    });
    Vue.filter("PoState", (val) => {
        if (!val) {
            return "";
        }
        switch (val) {
            case "11":
                return "初始";
                break;
            case "12":
                return "提交";
                break;
            case "20":
                return "订单受理";
                break;
            case "21":
                return "物流集单中";
                break;
            case "22":
                return "物流派单中";
                break;
            case "23":
                return "物流派单确认";
                break;
            case "29":
                return "物流派单撤单";
                break;
            case "30":
                return "仓库入库交接";
                break;
            case "31":
                return "订单受理";
                break;
            case "32":
                return "仓储派单拒单";
                break;
            case "39":
                return "仓库出库交接";
                break;
            case "41":
                return "配送派单受理";
                break;
            case "42":
                return "排车";
                break;
            case "43":
                return "提货中";
                break;
            case "44":
                return "配送中";
                break;
            case "49":
                return "配送派单拒单";
                break;
            case "51":
                return "已受理";
                break;
            case "52":
                return "提货交接";
                break;
            case "53":
                return "物流中转交接";
                break;
            case "55":
                return "集货交接";
                break;
            case "59":
                return "司机拒单";
                break;
            case "56":
                return "送货交接";
                break;
            case "81":
                return "到货签收"; //到货签收
                break;
            case "R34":
                return "物流出库结束";
                break;
            case "W30":
                return "设备绑定";
                break;
        }
    });
    Vue.filter('removeSplash', function(val) {
        if (val && val.indexOf('/') > -1) {
            let arr = val.split('/');
            if (arr.length > 1) {
                var x = new Set(arr);
                return [...x].join('');
            } else {
                return val.split('/').join('');
            }
        } else {
            return val;
        }
    });
    Vue.filter('GetDate', function(val) {
        if (val && val.indexOf('T') > -1) {
            return val.split('T')[0];
        } else {
            return val;
        }
    });
}